Autonomous modification of waterjet cutting systems

ABSTRACT

Systems and methods for providing real-time modification of cutting process programs using feedback from one or more sensors which measure one or more operational parameters of a cutting process and/or cutting apparatus. The sensor readings may be used to provide real-time modification of a motion program after such motion program has been provided to a motion controller. Examples of such operational parameters may include waterjet pump supply pressure, the abrasive mass flow rate, the force of the waterjet on the target piece, etc. The systems and methods discussed herein also utilize a cutting algorithm or program to calculate actual cut quality based on one or more sensor inputs, and to generate warnings or system shut-downs accordingly. The systems and methods discussed herein also utilize inspection devices to inspect coupons or first articles, and use the inspection data to autonomously modify motion programs and/or cutting process models without user intervention.

BACKGROUND Technical Field

The present disclosure generally relates to systems, methods, andarticles for planning, generating and controlling paths for tools usedto manufacture objects.

Description of the Related Art

Multi-axis machining is a manufacturing process where computernumerically controlled (CNC) tools that move in multiple ways are usedto manufacture objects by removing excess material. Systems used forthis process include waterjet cutting systems, laser cutting systems,plasma cutting systems, electric discharge machining (EDM), and othersystems. Typical multi-axis CNC tools support translation in 3 axes andsupport rotation around one or multiple axes. Multi-axis machines offerseveral improvements over other CNC tools at the cost of increasedcomplexity and price of the machine. For example, using multi-axismachines, the amount of human labor may be reduced, a better surfacefinish can be obtained by moving the tool tangentially about thesurface, and parts that are more complex can be manufactured, such asparts with compound contours.

High-pressure fluid jets, including high-pressure abrasive waterjets,are used to cut a wide variety of materials in many differentindustries. Abrasive waterjets have proven to be especially useful incutting difficult, thick, or aggregate materials, such as thick metal,glass, or ceramic materials. Systems for generating high-pressureabrasive waterjets are currently available, such as, for example, theMach 4™ 5-axis abrasive waterjet system manufactured by FlowInternational Corporation, the assignee of the present application, aswell as other systems that include an abrasive waterjet cutting headassembly mounted to an articulated robotic arm. Other examples ofabrasive waterjet cutting systems are shown and described in Flow's U.S.Pat. Nos. 5,643,058, 6,996,452, 6,766,216 and 8,423,172, which areincorporated herein by reference. The terms “high-pressure fluid jet”and “jet” should be understood to incorporate all types of high-pressurefluid jets, including but not limited to, high-pressure waterjets andhigh-pressure abrasive waterjets. In such systems, high-pressure fluid,typically water, flows through an orifice in a cutting head to form ahigh-pressure jet (or “beam”), into which abrasive particles arecombined as the jet flows through a mixing tube. The high-pressureabrasive waterjet is discharged from the mixing tube and directed towarda workpiece to cut the workpiece along a designated path, commonlyreferred to as a “toolpath.”

Various systems are available to move a high-pressure fluid jet along adesignated path. Such systems may commonly be referred to, for example,as three-axis and five-axis machines. Conventional three-axis machinesmount the cutting head assembly in such a way that the cutting headassembly can move along an x-y plane and perpendicular along a z-axis,namely toward and away from the workpiece. In this manner, thehigh-pressure fluid jet generated by the cutting head assembly is movedalong the designated path in an x-y plane, and is raised and loweredrelative to the workpiece, as may be desired. Conventional five-axismachines work in a similar manner but provide for movement about twoadditional non-parallel rotary axes. Other systems may include a cuttinghead assembly mounted to an articulated robotic arm, such as, forexample, a 6-axis robotic arm which articulates about six separate axes.

Manipulating a jet about five axes may be useful for a variety ofreasons, for example, to cut a three-dimensional shape. Suchmanipulation may also be desired to correct for cutting characteristicsof the jet or for the characteristics of the cutting result. Moreparticularly, a cut produced by a jet, such as an abrasive waterjet, hascharacteristics that differ from cuts produced by more traditionalmachining processes. Two of the cut characteristics that may result fromuse of a high-pressure fluid jet are referred to as “taper” and“trailback.”

FIG. 1 is an example illustration of taper. Taper is a phenomenonresulting from the width of a jet 10 from a cutting apparatus 12changing from its entry into a target piece 14 to its exit from thetarget piece. The taper angle α_(taper) refers to the angle of a planeof the cut wall relative to a vertical plane. Jet taper typicallyresults in a target piece that has different dimensions on the topsurface (where the jet enters the workpiece) than on the bottom surface(where the jet exits the workpiece). The taper distance D_(taper) of thewaterjet 10 is also shown in FIG. 1 .

FIG. 2 is an example illustration of trailback. Trailback, also referredto as stream lag, identifies the phenomenon that the high-pressure fluidjet exits the target piece 14 at a point behind the point of entry ofthe jet 10 into the target piece by a distance D_(trail) and angleα_(trail), relative to the direction of travel indicated by arrow 18.These two cut characteristics, namely taper and trailback, may or maynot be acceptable, given the desired end product. Taper and trailbackvary depending upon the speed the cut is made and other processparameters, such as material thickness. The fastest speed that the jet10 travels in order to reliably produce separation of part of thematerial from another part may be referred to as “separation speed.”Thus, one known way to control excessive taper and/or trailback is toslow down the cutting speed of the system. In situations where it isdesirable to minimize or eliminate taper and/or trailback, conventionalfive-axis systems have been used, primarily by manual trial and error,to apply angular corrections to the jet (by adjusting the cutting headapparatus) to compensate for taper and trailback as the jet moves alongthe cutting path.

BRIEF SUMMARY

A fluid jet apparatus control system may be summarized as including atleast one nontransitory processor-readable storage medium that stores atleast one of processor-executable instructions or data; and at least oneprocessor communicably coupled to the at least one nontransitoryprocessor-readable storage medium, in operation the at least oneprocessor: receives an initial motion program for a target object whichis to be cut by a fluid jet apparatus, the initial motion programincludes at least one of a lead angle program, a taper angle program, ora corner control program; executes a motion program to cause the fluidjet apparatus to cut the target object according to the received initialmotion program; and from time-to-time during execution of the motionprogram, autonomously receives at least one operational parameter of thefluid jet apparatus from at least one sensor; dynamically modifies atleast one of the lead angle program, the taper angle program, or thecorner control program based at least in part on the received at leastone operational parameter to generate a modified motion program; andexecutes the motion program to cause the fluid jet apparatus to cut thetarget object according to the modified motion program. The at least onesensor may include at least one of a supply pressure sensor, an abrasivemass flow rate sensor or a force sensor. The at least one sensor mayinclude a supply pressure sensor and an abrasive mass flow rate sensor.

The at least one processor may dynamically modify at least two of thelead angle program, the taper angle program, and the corner controlprogram based at least in part on the received at least one operationalparameter to generate a modified motion program. The at least oneprocessor may dynamically modify each of the lead angle program, thetaper angle program, and the corner control program based at least inpart on the received at least one operational parameter to generate amodified motion program. The at least one processor may dynamicallymodify a cutting speed of the fluid jet apparatus based at least in parton the received at least one operational parameter. The at least oneprocessor may dynamically modify at least one of the lead angle program,the taper angle program, or the corner control program during executionof the motion program with a response rate which is less than or equalto 200 milliseconds. The fluid jet apparatus control system may includea motion controller.

The at least one processor may receive a commanded percent cut speed ofthe fluid jet apparatus; determine an actual percent cut speed of thefluid jet apparatus based at least in part on the received at least oneoperational parameter; compare the actual percent cut speed of the fluidjet apparatus to the received commanded percent cut speed; determinewhether the actual percent cut speed differs from the commanded percentcut speed by more than an allowed percent cut speed threshold value; andresponsive to a determination that the actual percent cut speed differsfrom the commanded percent cut speed by more than the allowed percentcut speed threshold value may cause a warning to be generated; or causethe fluid jet apparatus to at least pause the cutting of the targetobject. Responsive to a determination that the actual percent cut speeddiffers from the commanded percent cut speed by more than the allowedpercent cut speed threshold value, the at least one processor may causeat least one of a visual warning or an audible warning to be generated.Responsive to a determination that the actual percent cut speed differsfrom the commanded percent cut speed by more than the allowed percentcut speed threshold value, the at least one processor may cause thefluid jet apparatus to terminate the cutting of the target object.

A method of autonomously controlling a fluid jet apparatus may besummarized as including receiving, by at least one processor, an initialmotion program for a target object which is to be cut by a fluid jetapparatus, the initial motion program including at least one of a leadangle program, a taper angle program, or a corner control program;executing, by the at least one processor, a motion program to cause thefluid jet apparatus to cut the target object according to the receivedinitial motion program; and from time-to-time during execution of themotion program, autonomously receiving, by the at least one processor,at least one operational parameter of the fluid jet apparatus from atleast one sensor; dynamically modifying, by the at least one processor,at least one of the lead angle program, the taper angle program, or thecorner control program based at least in part on the received at leastone operational parameter to generate a modified motion program; andexecuting, by the at least one processor, the motion program to causethe fluid jet apparatus to cut the target object according to themodified motion program. Autonomously receiving at least one operationalparameter of the fluid jet apparatus may include autonomously receivingat least one operational parameter of the fluid jet apparatus from atleast one of a supply pressure sensor, an abrasive mass flow rate sensoror a force sensor. Dynamically modifying at least one of the lead angleprogram, the taper angle program, or the corner control program mayinclude dynamically modifying at least two of the lead angle program,the taper angle program, and the corner control program based at leastin part on the received at least one operational parameter to generate amodified motion program.

The method may further include receiving, by the at least one processor,a commanded percent cut speed of the fluid jet apparatus; determining,by the at least one processor, an actual percent cut speed of the fluidjet apparatus based at least in part on the received at least oneoperational parameter; comparing, by the at least one processor, theactual percent cut speed of the fluid jet apparatus to the receivedcommanded percent cut speed; determining, by the at least one processor,whether the actual percent cut speed differs from the commanded percentcut speed by more than an allowed percent cut speed threshold value; andresponsive to determining that the actual percent cut speed differs fromthe commanded percent cut speed by more than the allowed percent cutspeed threshold value: causing, by the at least one processor, a warningto be generated; or causing, by the at least one processor, the fluidjet apparatus to at least pause the cutting of the target object.

The method may further include receiving, by the at least one processor,the allowed percent cut speed threshold value as input from at least oneuser interface communicatively coupled to the at least one processor.Causing a warning to be generated may include causing at least one of avisual warning or an audible warning to be generated. Causing the fluidjet apparatus to at least pause the cutting of the target object mayinclude causing the fluid jet apparatus to terminate the cutting of thetarget object.

A fluid jet apparatus control system may be summarized as including acontroller clock; at least one nontransitory processor-readable storagemedium that stores at least one of processor-executable instructions ordata; and at least one processor communicably coupled to the at leastone nontransitory processor-readable storage medium, in operation the atleast one processor: receives an initial motion program for a targetobject which is to be cut by a fluid jet apparatus; receives a referenceseparation cut speed; executes a motion program to cause the fluid jetapparatus to cut the target object according to the received initialmotion program; and from time-to-time during execution of the motionprogram, autonomously receives at least one operational parameter of thefluid jet apparatus from at least one sensor; autonomously determines amodified separation cut speed based at least in part on the received atleast one operational parameter; and autonomously adjusts a clock rateof the controller clock to cause the fluid jet apparatus to cut thetarget object based at least in part on the modified separation cutspeed. The at least one processor may adjust a clock rate of thecontroller clock so that a ratio of a new clock rate to a previous clockrate matches a ratio of the modified separation cut speed to a previousreference separation cut speed. The initial motion program may includeat least one of a lead angle program, a taper angle program, or a cornercontrol program. The at least one sensor may include at least one of asupply pressure sensor, an abrasive mass flow rate sensor or a forcesensor. The at least one sensor may include a supply pressure sensor andan abrasive mass flow rate sensor.

The at least one processor may receive a commanded percent cut speed ofthe fluid jet apparatus; determine an actual percent cut speed of thefluid jet apparatus based at least in part on the received at least oneoperational parameter; compare the actual percent cut speed of the fluidjet apparatus to the received commanded percent cut speed; determinewhether the actual percent cut speed differs from the commanded percentcut speed by more than an allowed percent cut speed threshold value; andresponsive to a determination that the actual percent cut speed differsfrom the commanded percent cut speed by more than the allowed percentcut speed threshold value may cause a warning to be generated; or causethe fluid jet apparatus to at least pause the cutting of the targetobject. The at least one processor may receive the allowed percent cutspeed threshold value from at least one user interface communicativelycoupled to the at least one processor. Responsive to a determinationthat the actual percent cut speed differs from the commanded percent cutspeed by more than the allowed percent cut speed threshold value, the atleast one processor may cause at least one of a visual warning or anaudible warning to be generated. Responsive to a determination that theactual percent cut speed differs from the commanded percent cut speed bymore than the allowed percent cut speed threshold value, the at leastone processor may cause to the fluid jet apparatus to terminate thecutting of the target object.

A method of autonomously controlling a fluid jet apparatus may besummarized as including receiving, by at least one processor, an initialmotion program for a target object which is to be cut by a fluid jetapparatus; receiving, by at least one processor, a reference separationcut speed; executing, by the at least one processor, a motion program tocause the fluid jet apparatus to cut the target object according to thereceived initial motion program; and from time-to-time during executionof the motion program, autonomously receiving, by the at least oneprocessor, at least one operational parameter of the fluid jet apparatusfrom at least one sensor; autonomously determining, by the at least oneprocessor, a modified separation cut speed based at least in part on thereceived at least one operational parameter; and autonomously adjusting,by the at least one processor, a clock rate of a controller clock tocause the fluid jet apparatus to cut the target object based at least inpart on the modified separation cut speed. Autonomously adjusting aclock rate of the controller clock may include autonomously adjusting aclock rate of the controller clock so that a ratio of a new clock rateto a previous clock rate matches a ratio of the modified separation cutspeed to a previous reference separation cut speed.

The method may further include receiving, by the at least one processor,a commanded percent cut speed of the fluid jet apparatus; determining,by the at least one processor, an actual percent cut speed of the fluidjet apparatus based at least in part on the received at least oneoperational parameter; comparing, by the at least one processor, theactual percent cut speed of the fluid jet apparatus to the receivedcommanded percent cut speed; determining, by the at least one processor,whether the actual percent cut speed differs from the commanded percentcut speed by more than an allowed percent cut speed threshold value; andresponsive to determining that the actual percent cut speed differs fromthe commanded percent cut speed by more than the allowed percent cutspeed threshold value: causing, by the at least one processor, a warningto be generated; or causing, by the at least one processor, the fluidjet apparatus to at least pause the cutting of the target object.Causing a warning to be generated may include causing at least one of avisual warning or an audible warning to be generated.

A method of autonomously controlling a fluid jet apparatus to cut atarget object may be summarized as including inspecting, by at least oneinspection device, a cut of a coupon which has been cut by the fluid jetapparatus; receiving, by at least one processor, inspection data fromthe inspection device based at least in part on the inspection of thecut of the coupon; modifying, by the at least one processor, at leastone cutting process model based at least in part on the receivedinspection data; generating, by the at least one processor, a motionprogram based at least in part on the modified at least one cuttingprocess model; and executing, by the at least one processor, thegenerated motion program to cause the fluid jet apparatus to cut thetarget object according to the generated motion program. Inspecting thecut of the coupon may include inspecting the cut of the coupon for atleast one process attribute comprising a trailback amount, a trailbackprofile or a taper profile. Inspecting the cut of the coupon may includeinspecting at least one of a width of the cut of the coupon and a frontprofile of the cut of the coupon. Inspecting the cut of the coupon mayinclude inspecting the cut of the coupon in at least a first directionand a second direction. Inspecting the cut of the coupon may includeinspecting the cut of the coupon utilizing at least one of a probe, acamera or a laser. Inspecting the cut of the coupon may includeinspecting the cut of the coupon to determine a shape of a trailbackprofile thereof. Inspecting the cut of the coupon may include inspectingthe cut of the coupon to determine the bow of the cut of the coupon.Modifying at least one cutting process model may include modifying theat least one cutting process model with respect to at least one of taperangle, lead angle or cutting speed.

The method may further include executing, by the at least one processor,an initial motion program to cause the fluid jet apparatus to cut thecoupon according to the initial motion program. Executing the initialmotion program to cause the fluid jet apparatus to cut the coupon mayinclude causing the fluid jet apparatus to cut the coupon at a leadangle specified by an initial cutting process model for cutting thetarget object. Executing the initial motion program to cause the fluidjet apparatus to cut the coupon may include causing the fluid jetapparatus to cut the coupon at a lead angle equal to 0 degrees.Modifying the at least one cutting process model may include modifyingthe at least one cutting process model to account for at least one of:taper angle, lead angle, bow, diameter of a mixing tube of the fluid jetapparatus, kerf profile, or wear of a nozzle of the fluid jet apparatus.

A fluid jet apparatus control system may be summarized as including afluid jet apparatus; at least one inspection device; at least onenontransitory processor-readable storage medium that stores at least oneof processor-executable instructions or data; and at least one processorcommunicably coupled to the at least one nontransitoryprocessor-readable storage medium, the at least one inspection device,and the fluid jet apparatus, in operation the at least one processor:causes the at least one inspection device to inspect a cut of a couponwhich has been cut by the fluid jet apparatus; receives inspection datafrom the inspection device based at least in part on the inspection ofthe cut of the coupon; modifies at least one cutting process model basedat least in part on the received inspection data; generates a motionprogram based at least in part on the modified at least one cuttingprocess model; and executes the generated motion program to cause thefluid jet apparatus to cut a target object according to the generatedmotion program. The at least one inspection device may inspect the cutof the coupon for at least one process attribute comprising a trailbackamount, a trailback profile or a taper profile. The at least oneinspection device may inspect at least one of a width of the cut of thecoupon and a front profile of the cut of the coupon. The at least oneinspection device may inspect the cut of the coupon in at least a firstdirection and a second direction. The at least one inspection device mayinclude at least one of a probe, a camera or a laser. The at least oneinspection device may determine a shape of a trailback profile of thecut of the coupon. The at least one inspection device may determine thebow of the cut of the coupon. The at least one processor may modify theat least one cutting process model with respect to at least one of taperangle, lead angle or cutting speed. The at least one processor mayexecute an initial motion program to cause the fluid jet apparatus tocut the coupon according to the initial motion program. The at least oneprocessor may cause the fluid jet apparatus to cut the coupon at a leadangle specified by an initial cutting process model for cutting thetarget object. The at least one processor may cause the fluid jetapparatus to cut the coupon at a lead angle equal to 0 degrees. The atleast one processor may modify the at least one cutting process model toaccount for at least one of: taper angle, lead angle, bow, diameter of amixing tube of the fluid jet apparatus, kerf profile, or wear of anozzle of the fluid jet apparatus.

A method of autonomously controlling a fluid jet apparatus may besummarized as including inspecting, by at least one inspection device, afirst target object which has been cut by the fluid jet apparatus;receiving, by at least one processor, inspection data from theinspection device based at least in part on the inspection of the cut ofthe first target object; modifying, by the at least one processor, atleast one motion program based at least in part on the receivedinspection data; and executing, by the at least one processor, themodified motion program to cause the fluid jet apparatus to cut a secondtarget object according to the modified motion program, the secondtarget object at least similar to the first target object with respectto one or more physical characteristics. Inspecting a first targetobject may include inspecting the first target object to identify errorsin a first plane, and modifying the at least one motion program includesmodifying at least one motion program to correct for identified errorsin the first plane. Inspecting a first target object may includeinspecting the first target object to identify errors in a plurality ofsurfaces of the first target object, and modifying the at least onemotion program includes modifying at least one motion program to correctfor identified errors in the plurality of surfaces. Modifying at leastone motion program may include modifying at least one cut angle for thefluid jet apparatus specified by the motion program.

A fluid jet apparatus control system may be summarized as including afluid jet apparatus; at least one inspection device; at least onenontransitory processor-readable storage medium that stores at least oneof processor-executable instructions or data; and at least one processorcommunicably coupled to the at least one nontransitoryprocessor-readable storage medium, the at least one inspection device,and the fluid jet apparatus, in operation the at least one processor:causes the at least one inspection device to inspect a first targetobject which has been cut by the fluid jet apparatus; receivesinspection data from the inspection device based at least in part on theinspection of the cut of the first target object; modifies at least onemotion program based at least in part on the received inspection data;and executes the modified motion program to cause the fluid jetapparatus to cut a second target object according to the modified motionprogram, the second target object at least similar to the first targetobject with respect to one or more physical characteristics. The atleast one inspection device may inspect the first target object toidentify errors in a first plane, and the at least one processor maymodify at least one motion program to correct for identified errors inthe first plane. The at least one inspection device may inspect thefirst target object to identify errors in a plurality of surfaces of thefirst target object, and the at least one processor may modify at leastone motion program to correct for identified errors in the plurality ofsurfaces. The at least one processor may modifies at least one cut anglefor the fluid jet apparatus specified by the motion program.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

In the drawings, identical reference numbers identify similar elementsor acts. The sizes and relative positions of elements in the drawingsare not necessarily drawn to scale. For example, the shapes of variouselements and angles are not necessarily drawn to scale, and some ofthese elements may be arbitrarily enlarged and positioned to improvedrawing legibility. Further, the particular shapes of the elements asdrawn, are not necessarily intended to convey any information regardingthe actual shape of the particular elements, and may have been solelyselected for ease of recognition in the drawings.

FIG. 1 is a schematic diagram which illustrates taper for a waterjetcutting process.

FIG. 2 is a schematic diagram which illustrates trailback for a waterjetcutting process.

FIG. 3 is a functional block diagram of CAD/CAM system and cuttingsystem, according to one illustrated implementation.

FIG. 4 is a functional block diagram of portions of the CAD/CAM systemof FIG. 3 , according to one illustrated implementation.

FIG. 5 is a flow diagram of logic executed by an example implementationof an Adaptive Vector Control System (AVCS) to produce a target piece,according to one illustrated implementation.

FIG. 6 is a flow diagram of a method of operating a controller to modifya dynamic waterjet model in real-time, according to one illustratedimplementation.

FIG. 7 is a flow diagram of a method of operating a controller toprovide real-time adjustment of jet orientation for a waterjet cuttingsystem, according to one illustrated implementation.

FIG. 8 is a flow diagram of a method of operating a controller to adjusta clock thereof in real-time responsive to changing operatingparameters, according to one illustrated implementation.

FIG. 9 is a flow diagram of a method of operating a controller to issuesystem warnings and/or shutdowns based on real-time sensing of one ormore operating parameters, according to one illustrated implementation.

FIG. 10 is a flow diagram of a method of operating a fluid jet apparatusto cut a target object which utilizes real-time dynamic parameters toinput into cutting process models for more accurate motion programs,according to one illustrated implementation.

FIG. 11 is a flow diagram of a method of operating a fluid jet apparatusto cut a target object which utilizes an inspection device to identifyerrors in a first article and which automatically corrects a motionprogram using the inspection data, according to one illustratedimplementation.

FIG. 12 is a flow diagram of a method of operating a fluid jet apparatusto cut a target object which utilizes an inspection device to inspect acut of a coupon for one or more process attributes, and modifies ortunes cutting process models based on the inspection, according to oneillustrated implementation.

FIG. 13 is a flow diagram of a method of operating a fluid jet apparatusto cut a target object which combines the features of the methods shownin FIGS. 10, 11 and 12 , according to one illustrated implementation.

FIG. 14 is a diagram which shows various cut width attributes for a cutmade by a fluid jet apparatus, according to one illustratedimplementation.

FIG. 15 is a diagram which shows various cut front attributes for a cutmade by a fluid jet apparatus, according to one illustratedimplementation.

FIG. 16 is a plot of sample kerf width profiles for a number of cuts ofa coupon, according to one illustrated implementation.

FIG. 17 shows an example of an inspection device which may be utilizedto inspect a cut of a coupon, according to one illustratedimplementation.

FIG. 18 is a plot that illustrates lead angle determination frominspected trailback data, according to one illustrated implementation.

FIG. 19 is a flow diagram of a method of operating a fluid jet apparatusto cut a target object, according to one illustrated implementation.

DETAILED DESCRIPTION

In the following description, certain specific details are set forth inorder to provide a thorough understanding of various disclosedimplementations. However, one skilled in the relevant art will recognizethat implementations may be practiced without one or more of thesespecific details, or with other methods, components, materials, etc. Inother instances, well-known structures associated with computer systems,server computers, and/or communications networks have not been shown ordescribed in detail to avoid unnecessarily obscuring descriptions of theimplementations.

Unless the context requires otherwise, throughout the specification andclaims that follow, the word “comprising” is synonymous with“including,” and is inclusive or open-ended (i.e., does not excludeadditional, unrecited elements or method acts).

Reference throughout this specification to “one implementation” or “animplementation” means that a particular feature, structure orcharacteristic described in connection with the implementation isincluded in at least one implementation. Thus, the appearances of thephrases “in one implementation” or “in an implementation” in variousplaces throughout this specification are not necessarily all referringto the same implementation. Furthermore, the particular features,structures, or characteristics may be combined in any suitable manner inone or more implementations.

As used in this specification and the appended claims, the singularforms “a,” “an,” and “the” include plural referents unless the contextclearly dictates otherwise. It should also be noted that the term “or”is generally employed in its sense including “and/or” unless the contextclearly dictates otherwise.

The headings and Abstract of the Disclosure provided herein are forconvenience only and do not interpret the scope or meaning of theimplementations.

One or more implementations of the present disclosure provide enhancedprocessor-based methods, systems, and techniques for adjusting jetorientation models in a waterjet cutting system in real-time tocompensate for variations in process parameters to achieve superiorcontrol over the surface of the cut and resulting piece generated by thecut. Currently, when utilizing dynamic waterjet cutting solutions, anoperator enters the process conditions in a setup interface. Such“pre-processing” setup is followed by the generation of a motion programwhich can be provided to a motion controller. In reality, the systemparameters input by the operator may not be the real or actual systemparameters. For example, a user may input a supply pressure of 87,000pounds per square inch (psi), when in reality the system operates at adifferent pressure (e.g., 83,000 psi, 95,000 psi). Similarly, the systemparameters input may change during the cutting process. For example,during the course of a cutting process a slow dynamic seal failure maylead to leakage and an inability to reach the full pressure set duringpre-processing setup. One or more implementations discussed herein allowfor real-time modification to a motion program after the motion programhas been delivered to a motion controller (e.g., CNC controller, PMACmotion controller). For example, in some implementations the systemprovides real-time tuning of dynamic waterjet cutting models, includinglead angle models, taper angle models, and/or corner control models,etc.

It should be appreciated that modification to a motion program togenerate a “modified motion program” may be achieved in several ways.For example, a motion program may include a series or list of specificsteps (e.g., move to point one, move to point two, etc.). In at leastsome implementations, a motion program may be modified by leaving theoriginal motion program intact while adding one or more small additionalmoves. Such moves may be done through kinematics routines or offsets tomotor commands, for example. That is, the original motion program maynot be altered, but the effects (e.g., intended results) of the programmay be modified to produce a “modified motion program.” In at least someimplementations, a motion program may be modified by modifying theoriginal list of steps of motion program (e.g., move to modified pointone, move to modified point two, etc.).

The dynamic waterjet cutting models discussed further below may bedependent on multiple process parameters. Examples of such processparameters include the waterjet pump supply pressure, the abrasive massflow rate, the force of the waterjet on the target piece, etc. If one ormore of these process parameters vary during the process of cutting,corrective dynamic waterjet cutting models may apply an inaccuratecorrection (e.g., for taper). As discussed below, implementations of thepresent disclosure measure one or more process parameters using suitablesensors or transducers and provide the measured process parameters asinputs to refine or otherwise modify one or more dynamic waterjetcutting models in real-time (e.g., 10 milliseconds (ms) or less, 200 msor less). Such inputs may be fed to a motion controller via a suitablemotion controller interface or module. In at least one implementation,any measureable parameter which relates to cutting speed may be used forthe real-time adjustments discussed herein.

Example implementations provide an Adaptive Vector Control System(“AVCS”) that automatically predicts how far the jet will deviate fromthe desired cutting path profile and automatically determinesappropriate deviation correction angles that can be used to generate amotion control program or other data for controlling orientation of acutting head apparatus. The deviation correction angles are determinedas functions of the target piece geometry, as well as speed and/or otherprocess parameters, as noted above. By determining the deviationcorrection angles and using them, as appropriate, to generateinstructions in the motion control program/data (in a form dependentupon what the cutting head controller can process), the AVCS enables thecutting head apparatus/controller to automatically control the threedimensional position and tilt and swivel of the cutting head and hencethe x-axis, y-axis, z-axis and angular positions of the jet, relative tothe material being cut, as the jet moves along a cutting path in threedimensional space to cut the target piece. In at least someimplementations, the AVCS where possible maximizes cutting speed whilestill maintaining desired tolerances.

In at least one implementation, the AVCS uses a set of advancedpredictive models to determine the characteristics of an intended cutthrough a given material and to provide the deviation correction anglesto account for predicted deviation of the jet from a straight-linetrajectory. The predicted deviation may be related, for example, to thewidth of the jet changing as it penetrates through the material and/orthe stream lag or deflection that results in the jet exiting at a pointin some direction distant from the intended exit point. When cuttingstraight wall pieces, these cutting phenomena can be expressed astrailback/lag and taper and the corresponding deviation correctionsexpressed as lead compensation and taper compensation angles. However,when cutting more complicated pieces, such as non-vertical (beveled)surfaces, non-flat (curved) material, pieces with directional changesover the depth of the jet, pieces with different shapes on the top andon the bottom, etc., these deviations have directional components (suchas forward, backward, and sideways terms relative to the direction andpath of jet travel) that influence the deviations. The prediction ofangular corrections thus becomes far more complex. Using advancedpredictive models, the AVCS operates without manual (e.g., human)intervention and does not require special knowledge by the operator torun the cutting machine. The automatic nature of the AVCS thus supportsdecreased production time as well as more precise control over thecutting process, especially of complex parts.

Although discussed herein in terms of waterjets, and abrasive waterjetsin particular, the described techniques can be applied to any type offluid jet, generated by high pressure or low pressure, whether or notadditives or abrasives are used. In addition, these techniques can bemodified to control the x-axis, y-axis, z-offset, and tilt and swivel(or other comparable orientation) parameters as functions of processparameters other than speed, and the particulars described herein.

FIGS. 3 and 4 illustrate example systems which may be used toimplementation the features of the present disclosure. FIGS. 5-9 areflow diagrams which illustrate the processes of implementing thefeatures discussed herein.

FIG. 3 is a block diagram illustrating the use of a CAD/CAM computersystem 300 to produce a target piece or object 306. In typicaloperation, an operator 302 uses a CAD application 304 executing on theCAD/CAM system 300 to specify a design of the target object 306 (e.g., athree dimensional object) to be cut from a workpiece material 308. TheCAD/CAM system 300 may be directly or indirectly connected to anabrasive waterjet (AWJ) cutting apparatus 310 (or other type of cuttingapparatus), such as the high-pressure fluid jet apparatus called the“Dynamic Waterjet® XD” sold by Flow International Corporation. Thecutting apparatus 310 utilizes a cutting beam 312 (e.g., a waterjet, alaser beam, etc.) to remove material from the workpiece 308. Other4-axis, 5-axis, or greater axis machines can also be used providing thatthe “wrist” of the fluid jet apparatus allows sufficient (e.g., angular)motion. Any existing CAD program or package can be used to specify thedesign of the target object 306 providing it allows for the operationsdescribed herein.

The CAD/CAM system 300 also includes a CAM application 314. The CAMapplication 314 may be incorporated into the CAD application 304, orvice versa, and may generally be referred to as a CAD/CAM application orsystem. Alternatively, the CAM application 314 may be separate from theCAD application 304. The CAD application 304 and CAM application 314 mayreside on the same or different CAD/CAM systems 300. A system whichimplements a CAM application may be referred to as a “CAM system.”

A solid 3D model design for the object 306 to be manufactured may beinput from the CAD application 304 into the CAM application 314 which,as described in detail below, automatically generates a motion program316 (or other programmatic or other motion related data) that specifieshow the cutting apparatus 310 is to be controlled to cut the object 306from the workpiece 308. The motion program 316 may be generated by amotion program generator application or module 318 within the CAMapplication 314. When specified by the operator, the CAM system 300sends the motion program 316 to a hardware/software controller 320(e.g., a computer numerical controller, “CNC”) via a suitable interfaceor module 331, which directs the cutting apparatus 310 to cut theworkpiece 308 according to the instructions contained in the motionprogram to produce the object 306. Used in this manner, the CAMapplication 314 provides a CAM process to produce target pieces.

Although the CAD/CAM system 300 described in FIG. 3 is shown residing ona CAD/CAM system separate from, but connected to, the cutting apparatus310, the CAD/CAM system alternatively may be located on other deviceswithin the overall system, depending upon the actual configuration ofthe cutting apparatus and the computers or other controllers associatedwith the overall cutting system. For example, the CAD/CAM system 300 maybe embedded in the controller 320 of the cutting apparatus itself (aspart of the software/firmware/hardware associated with the machine). Asanother example, the CAD/CAM system 300 may reside on a computer systemconnected to the controller 320 directly or through a network. Inaddition, the controller 320 may take many forms including integratedcircuit boards as well as robotics systems. All such combinations orpermutations are contemplated, and appropriate modifications to theCAD/CAM system 300 described, such as the specifics of the motionprogram 316 and its form, are contemplated based upon the particulars ofthe cutting system and associated control hardware and software.

In some implementations, the CAD/CAM system 300 includes one or morefunctional components/modules that work together to provide the motionprogram 316 to automatically control the tilt and swivel of the cuttingapparatus 310 and other parameters that control the cutting apparatus,and hence the x-axis, y-axis, and z-axis and angular positions of thecutting beam 312 relative to the workpiece material 308 being cut, asthe cutting beam moves along a machining path in three dimensional spaceto cut the object 306. These components may be implemented in software,firmware, or hardware or a combination thereof. The CAD/CAM system 300may include the motion program generator 318, a user interface 322, suchas a graphical user interface (“GUI”), one or more models 324, and aninterface 326 to the cutting apparatus controller 320. The motionprogram generator 318 may be operatively coupled to the CAD application304 and the user interface 322 to create the motion program 316 orcomparable motion instructions or data that can be forwarded to andexecuted by the controller 320 to control the cutting apparatus 310, andhence the cutting beam 312. Alternative arrangements and combinations ofthese components are equally contemplated for use with techniquesdescribed herein. For example, in some implementations, the userinterface 322 is intertwined with the motion program generator 318 sothat the user interface controls the program flow and generates themotion program 316 and/or data. In another implementation, the coreprogram flow is segregated into a kernel module, which is separate fromthe motion program generator 318.

The models 324 (also referred to as machining knowledge data) providethe motion program generator 318 with access to sets of mathematicalmodels or data that may be used to determine appropriate cutting beamorientation and cutting process parameters. Each mathematical model mayinclude one or more sets of algorithms, equations, tables, or data thatare used by the motion program generator 318 to generate particularvalues for the resultant commands in the motion program 316 to producedesired cutting characteristics or behavior. For example, in a 5-axismachine environment, these algorithms/equations may be used to generatethe x-position, y-position, z-standoff compensation value, lead angle,taper angle and deviation correction angles (for example, that are usedto control the tilt and swivel positions of the cutting apparatus) ofeach command if appropriate. In some implementations, the models 324include a set of algorithms, equations, tables, rules or data forgenerating deviation corrections, for generating speed and accelerationvalues, for determining machining paths including sequences formachining paths, and other models. The mathematical models or machiningknowledge data may be created experimentally and/or theoretically basedupon empirical observations and prior analysis of machining data andstored in or on one or more non-transitory computer- orprocessor-readable medium.

The models 324 may provide multiple mathematical models, typically inthe form of software or other logic, that can be replaced without takingthe machine off-line, for example in the form of “dynamic linklibraries” (DLLs). In other implementations they may be non-replaceableand compiled or linked into the AVCS code, for example, in the form ofstatic linked libraries. Other architectures are equally contemplated.For example, in one implementation, the models 324 include a set ofalgorithms, equations, tables, or data for generating lead and taperangle values 332; a set of algorithms, equations, tables, or data forgenerating speed and acceleration values 330; a set of algorithms,equations, tables, or data for generating modified cutting processparameter values for cutting curves, corners, etc. 324; and other models326. The mathematical models 324 are typically created experimentallyand theoretically based upon empirical observations and prior analysisof cutting data.

In some implementations, the CAD/CAM system 300 communicatesinstructions or data to the controller 320 (e.g., via a controllerlibrary 328) through the interface or module 331 of the controllercoupled to the CAD/CAM system by a suitable wired and/or wireless link326, which provides functions for two way communication between thecontroller and the CAD/CAM system. These controller functions may beused, for example, to display the machining path in progress while theobject 306 is being cut out of the workpiece 308. They may also be usedto obtain values of the cutting apparatus 310, such as the current stateof the attached mechanical and electrical devices, as discussed below.In implementations where the CAD/CAM system 300 is embedded in thecontroller 320 or in part of the cutting apparatus 310, some of thesecomponents or functions may be eliminated.

A number of sensors 338 may be provided which are operative to measureone or more process parameters in real-time during execution of thecutting process. As an example, the number of sensors 338 may include asystem pressure sensor 340, a waterjet abrasive mass flow rate sensor342, a force applied to the part sensor 344, and/or other sensors 346.Outputs from each of the one or more sensors 338 may be fed to thecontroller 320 via a suitable wired and/or wireless link 327 coupled tothe interface or module 331 of the controller. Additionally oralternatively, the outputs from each of the one or more sensors 338 maybe fed to the CAD/CAM system 300 via a suitable wired and/or wirelesslink 329. As discussed further below, the controller 320 and/or theCAD/CAM system 300 may utilize feedback from the sensors 338 to modifythe cutting process in real-time dependent on one or more processparameters measured or detected by the one or more sensors.

Many different arrangements and divisions of functionality of thecomponents of a CAD/CAM system 300 are possible. The implementationsdescribed herein may be practiced without some of the specific details,or with other specific details, such as changes with respect to theordering of the code flow, different code flows, etc., or the specificfeatures shown on the user interface screens. Thus, the scope of thetechniques and/or functions described is not limited by the particularorder, selection, or decomposition of blocks described with reference toany particular routine or code logic. In addition, exampleimplementations described herein provide applications, tools, datastructures and other support to implement a CAD/CAM system 300 forcutting objects. Other implementations of the described techniques maybe used for other purposes, including for other fluid jet apparatuscutting, laser beam cutting, etc.

FIG. 4 and the following discussion provide a brief, general descriptionof a networked environment 400 that includes the components forming anexemplary CAD/CAM system 402 in which the various illustratedimplementations can be implemented. Although not required, some portionof the implementations will be described in the general context ofcomputer-executable instructions or logic, such as program applicationmodules, objects, or macros being executed by a computer. Those skilledin the relevant art will appreciate that the illustrated implementationsas well as other implementations can be practiced with other computersystem configurations, including handheld devices for instance Webenabled cellular phones or PDAs, multiprocessor systems,microprocessor-based or programmable consumer electronics, personalcomputers (“PCs”), network PCs, minicomputers, mainframe computers, andthe like. The implementations can be practiced in distributed computingenvironments where tasks or modules are performed by remote processingdevices, which are linked through a communications network. In adistributed computing environment, program modules may be located inboth local and remote memory storage devices.

The CAD/CAM system 402 may include one or more processing units 412 a,412 b (collectively 412), a system memory 414 and a system bus 416 thatcouples various system components, including the system memory 414 tothe processing units 412. The processing units 412 may be any logicprocessing unit, such as one or more central processing units (CPUs) 412a or digital signal processors (DSPs) 412 b. The system bus 416 canemploy any known bus structures or architectures, including a memory buswith memory controller, a peripheral bus, and/or a local bus. The systemmemory 414 includes read-only memory (“ROM”) 418 and random accessmemory (“RAM”) 420. A basic input/output system (“BIOS”) 422, which canform part of the ROM 418, contains basic routines that help transferinformation between elements within the CAD/CAM system 402, such asduring start-up.

The processing unit(s) 412 may be any logic processing unit, such as oneor more central processing units (CPUs), digital signal processors(DSPs), application-specific integrated circuits (ASICs), fieldprogrammable gate arrays (FPGAs), graphical processing units (GPUs),etc. Non-limiting examples of commercially available computer systemsinclude, but are not limited to, an 80×86 or Pentium seriesmicroprocessor from Intel Corporation, U.S.A., a PowerPC microprocessorfrom IBM, a Sparc microprocessor from Sun Microsystems, Inc., a PA-RISCseries microprocessor from Hewlett-Packard Company, a 68xxx seriesmicroprocessor from Motorola Corporation, an ATOM processor, or an AXprocessor. Unless described otherwise, the construction and operation ofthe various blocks in FIG. 4 are of conventional design. As a result,such blocks need not be described in further detail herein, as they willbe understood by those skilled in the relevant art.

The CAD/CAM system 402 may include a hard disk drive 424 for readingfrom and writing to a hard disk 426, an optical disk drive 428 forreading from and writing to removable optical disks 432, and/or amagnetic disk drive 430 for reading from and writing to magnetic disks434. The optical disk 432 can be a CD-ROM, while the magnetic disk 434can be a magnetic floppy disk or diskette. The hard disk drive 424,optical disk drive 428 and magnetic disk drive 430 may communicate withthe processing unit 412 via the system bus 416. The hard disk drive 424,optical disk drive 428 and magnetic disk drive 430 may includeinterfaces or controllers (not shown) coupled between such drives andthe system bus 416, as is known by those skilled in the relevant art.The drives 424, 428 and 430, and their associated computer-readablemedia 426, 432, 434, provide nontransitory nonvolatile storage ofcomputer-readable instructions, data structures, program modules andother data for the CAD/CAM system 402. Although the depicted CAD/CAMsystem 402 is illustrated employing a hard disk 424, optical disk 428and magnetic disk 430, those skilled in the relevant art will appreciatethat other types of computer-readable media that can store dataaccessible by a computer may be employed, such as WORM drives, RAIDdrives, magnetic cassettes, flash memory cards, digital video disks(“DVD”), RAMs, ROMs, smart cards, etc.

Program modules can be stored in the system memory 414, such as anoperating system 436, one or more application programs 438, otherprograms or modules 440 and program data 442. The application programs438 may include instructions that cause the processor(s) 412 toimplement the CAD application and CAM application shown in FIG. 3 , forexample. These various aspects are described in detail herein withreference to the various flow diagrams.

The system memory 414 may also include communications programs, forexample, a server 444 that causes the CAD/CAM system 402 to serveelectronic information or files via the Internet, intranets, extranets,telecommunications networks, or other networks. The server 444 in thedepicted implementation is markup language based, such as HypertextMarkup Language (HTML), Extensible Markup Language (XML) or WirelessMarkup Language (WML), and operates with markup languages that usesyntactically delimited characters added to the data of a document torepresent the structure of the document. A number of suitable serversmay be commercially available such as those from Mozilla, Google,Microsoft and Apple Computer.

While shown in FIG. 4 as being stored in the system memory 414, theoperating system 436, application programs 438, other programs/modules440, program data 442 and server 444 can be stored on the hard disk 426of the hard disk drive 424, the optical disk 432 of the optical diskdrive 428 and/or the magnetic disk 434 of the magnetic disk drive 430.

An operator can enter commands and information into the CAD/CAM system402 through input devices such as a touch screen or keyboard 446 and/ora pointing device such as a mouse 448, imager 466 and/or via a graphicaluser interface. Other input devices can include a microphone, joystick,game pad, tablet, scanner, etc. These and other input devices areconnected to one or more of the processing units 412 through aninterface 450 such as a serial port interface that couples to the systembus 416, although other interfaces such as a parallel port, a game portor a wireless interface or a universal serial bus (“USB”) can be used. Amonitor 452 or other display device is coupled to the system bus 416 viaa video interface 454, such as a video adapter. The CAD/CAM system 402can include other output devices, such as speakers, printers, etc.

The CAD/CAM system 402 can include one or more network interfaces 460and/or one or more modems 461 (e.g., DSL modem, cable modem), and canoperate in the networked environment 400 using logical connections 410to one or more remote computers and/or devices. For example, the CAD/CAMsystem 402 can operate in a networked environment using logicalconnections 410 to the controller of the waterjet apparatus (FIG. 3 ).Communications may be via a wired and/or wireless network 470, forinstance, wired and wireless enterprise-wide computer networks,intranets, extranets, and/or the Internet. Other implementations mayinclude other types of communications networks includingtelecommunications networks, cellular networks, paging networks, andother mobile networks. There may be any variety of computers, switchingdevices, routers, bridges, firewalls and other devices in thecommunications paths between the CAD/CAM system 402 and other clientprocessor-based systems.

FIG. 5 is an example flow diagram of a method 500 executed by an exampleimplementation of a CAD/CAM system or AVCS to produce a target piece.The method 500 begins at 502.

At 504, the AVCS gathers a variety of input data from the operator, suchas from a CAD application (e.g., CAD application 304) running on aworkstation (e.g., CAD/CAM system 300 of FIG. 3 ), including a design (ageometry specification) for a target piece in a three-dimensional CADformat, or equivalent. The geometry specification may describe a partformed by “ruled surfaces.”

A ruled surface is typically described by a set of points swept by amoving straight line. Since an unobstructed waterjet will proceed in astraight line, a ruled surface gives a natural way to define a part thatmay be produced. Generally speaking, a non-ruled surface is moredifficult to cut by a waterjet process. However, cutting a non-ruledsurface can be made to approximate the cutting of a ruled surface byviewing the cutting thereof as cutting a series of smaller ruledsurfaces. The more subdivided the non-ruled surface into smaller ruledsurfaces, the more likely the resultant shape will approximate theintended shape. For example, cutting a spherical surface can beapproximated by cutting a multitude of smaller polygon flat surfaces;the more polygons cut, the more the resultant shape looks round. Also,it is possible to cut (remove) a ruled surface from a non-ruledworkpiece.

In addition, other customer requirements can be specified and gathered,such as dimensional tolerances, and an indication of the surface finish(and/or desired quality and/or acceptable speed). In at least someimplementations, these input specifications may be supplied by a GUI,such as the user interface 322 of FIG. 3 , by using tools that allowusers to assign tolerances and/or indications of desired finish toparticular regions of (areas and/or surfaces of) the target piece, forexample, through standard or proprietary user interface controls such asbuttons, edit fields, drop downs or a direct manipulation interface thatincorporates drag-drop techniques. Dimensional tolerances may, forexample, be indicated by a numerical input or some alternative scale.For example, scales that indicate relative accuracy can be used such as“tight tolerance” “standard tolerance,” and “loose tolerance.”Additionally, the whole part need not be assigned the same dimensionaltolerance. For example, a mating surface may be defined as requiringhigher precision than other less critical surfaces. Part tolerance isfrequently traded off with surface finish with rougher surfaces creatingless dimensionally accurate parts. In cases where the dimensionaltolerance opposes the surface finish, the more stringent requirement ofthe two typically is used by the AVCS. For example, a part allowing a“loose tolerance” but a “fine finish” will be assigned the “fine finish”requirement. In addition, other indications of surface finish may beused such as a degree or a scale of desired quality and/or relativespeed, where for example, 100% is equivalent to the fastest possiblespeed for that portion (e.g., a region of the part) and, for example,50% is indicative of a finer finish. Other scales for indicating surfacefinish or the quality of the cut can be used, for example, indicationsof quality such as “rough finish,” “medium finish,” and “smooth finish.”As well, default values may be supplied by the AVCS as well as a singlevalue for the entire part.

At 506, the AVCS gathers other input data, such as process parameters,typically from an operator, although these parameters may have defaultvalues or some may be able to be queried and obtained from the jetapparatus controller. In one example implementation, the AVCS determinesvalues for one or more of the type of material being cut; materialthickness; fluid pressure; nozzle orifice diameter; abrasive flow rate;abrasive type; offset distance; mixing tube diameter; and mixing tubelength (or other mixing tube characteristics) as process parameters. Asdiscussed further below with reference to FIGS. 6-9 , in someimplementations one or more process parameters are measured in real-timeand provided to the controller (e.g., controller 320 of FIG. 3 ) todynamically tune one or more cutting models in real-time.

At 508, the AVCS uses the received geometry specification and inputprocess parameters to automatically calculate an offset geometry. Theoffset geometry is the geometry that needs to be followed when thetarget piece is cut to account for any width that the jet actually takesup (the width of the cut/kerf due to the jet). This prevents theproduction of pieces that are smaller or larger than specified. Ascharacteristics of the jet change over time, for example, due to wear,jet process parameters need to be correspondingly modified in order tocompute the correct offset. In some implementations, the size of theoffset is fixed and part of the input data. Calculation of the offsetgeometry for a three-dimensional part may be achieved using knowntechniques for offsetting surfaces. Alternatively, an approximation ofthe offset geometry instead of direct calculation may be obtained bycomputing an offset from the jet entry contour (the contour of the partwhere the jet enters the material) and computing an offset from the jetexit contour (the contour of the part where the jet exits the material)and then connecting the entrance and exit contours by lines. Dependingon the inclinations of the surfaces and allowed tolerances, thisapproximation methodology may or may not be acceptable.

Acts 510-520 generate a motion program by incrementally storingdetermined program values in a motion program structure (or other datastructure, as needed by a particular cutting head controller, cuttinghead, etc.). In at least some implementations, the entries in the datastructure correspond to stored motion program instructions and/or datathat are executed by the controller. Depending upon the particularcutting head apparatus and controller, the motion program may be motioninstructions and/or data, fed directly or indirectly to thehardware/software/firmware that controls the cutting head. In addition,some configurations require inverse kinematic data because theinstructions are specified from the point of view of the motors in thecutting head instead of from the point of view of the jet. Inversekinematics can be computed using known mathematics to convert jetcoordinates into motor (or sometimes referred to as joint) commands. Allsuch implementations can be incorporated into an AVCS appropriatelyconfigured to use the techniques described herein.

In particular, at 510, the offset geometry is segmented into a number ofpart geometry vectors (PGVs). This segmentation is performed, forexample, automatically by components of the AVCS, or, in someimplementations, may be performed externally, such as by a CAD/CAMprogram. Information from the part geometry specification and offsetgeometry is used to determine the jet entrance contour where the cuttingjet will enter the target material as it progresses along the desiredcutting path, and the jet exit contour where the cutting jet will leavethe material accordingly. For example, when cutting a part from flatstock, the jet entrance contour will define the cutting path on the topof the part and the jet exit contour will define the cutting path on thebottom of the part. The PGVs then are formed by using multiple lines toconnect the jet entrance contour to the jet exit contour in a one to onerelationship. That is, there are an equal number of segments betweenPGVs in both the entrance and exit contours. In at least one exampleimplementation, the end points of each PGV are connected by lines toeach succeeding PGV along the contour. In at least one implementation,the number of PGVs is determined by the desired resolution of the targetpart to be cut. Other factors such as the hardware kinematics or motioncontroller capabilities may also be considered when determining thenumber of required PGVs. Additionally, lead-in and lead-out PGVs may beadded to the offset geometry (or beforehand to the geometry specified bythe user) to correspond to start and finishing positions of the jet.These vectors do not define the part, but describe the way the jetstarts and ends its cut into the workpiece.

At 512, an indication of maximum cutting speed allowed is assigned toone or more surfaces or regions of the desired part. Typically, theoperator (or using a default provided by the AVCS) assigns a maximumspeed to each region/surface of the target part, a set of regions, orthe whole part, either as an indication of speed or by specifyingsurface finish and/or quality, etc. Defining the maximum speed allowedsets an upper limit on how rough the surface finish of the cut will be.Cutting speed and surface finish are tightly related; thus, theindication of maximum speed allowed may take the form of any scalerepresenting cutting speed, surface finish, or cut quality. Using theinput data, process parameters, received geometry specification,indication of speed, and any required mathematical relationships, theAVCS then automatically calculates the desired tool tip speed along thejet entrance contour for each segment (between PGVs) based upon theindicated maximum cutting speed assigned to each respectivesurface/region. In the case where the length of a segment on theentrance contour and corresponding segment on the exit contour aredifferent, the cutting speed will vary along the length (projection intothe material) of the jet (because more material needs to be cut on onecontour than the other in a given period of time). Thus, the AVCS needsto adjust the cutting speed at jet entrance such that no portion of agiven surface is cut at a speed greater than the indicated maximumallowed speed. This means that the cutting speeds along some portions ofthe jet (hence assigned to the PGV) may be conservative to insure thatall regions (surface areas) bounded by PGVs do not violate the qualityrequirement (e.g., are within the desired maximum speed). An exampleusing a percent of maximum speed as a suitable indication of maximumspeed is available in FlowMaster™ controlled shape cutting systems,currently manufactured by Flow International Corporation. Equivalentindicators of surface finish, speed, and/or quality are generally known.When using percent of maximum speed as the indicator, predictive models,equations, and/or equivalent look-up tables, such as the speed andacceleration model 330, can be used by the AVCS to determine the fastestcutting speed possible for a given thickness of material based on theinput data (for example, to comport with Newtonian constraints). Thepercentage value is then used to scale the calculated maximum value.

At 512, the determination of speed is made for each top/bottom pair ofsegments bounded by adjacent PGVs. Given the lengths of the top andbottom segments and an indication of speed, the AVCS automaticallycalculates both the top and bottom cutting speeds.

At 514, the tolerance input data from act 504 are used to determine anenclosed (imaginary) volume around each PGV. This volume represents thedeviation tolerance (or deviation tolerance zone) for each PGV. Inpractice, the tolerance requirements may be directional in nature. Forexample, as the jet is directed into an inside corner, it may beundesirable to create a region of overcutting into the part. On anoutside corner, however, cutting into the waste material by the trailingjet may be acceptable. These different requirements may result in onetolerance value as the jet goes into the corner and another tolerancevalue as the jet leaves the corner. Such requirements might createtolerance volumes of varying sizes and shapes throughout a part. Inaddition, a single tolerance value may be assigned to the entire part,for example, when less precision of any subparts of the part isrequired. Also, one or more tolerances may be assigned by the cuttingsystem, for example, as default values.

At 516, the AVCS automatically determines the shape of the part to becut and whether or not the shape is within the deviation toleranceassociated with each PGV. In at least one implementation, the indicationof maximum allowed speed, input data, received geometry specification,and part geometry vectors are used to predict the shape of the cuttingfront (the cut down the length of the jet) as it moves into theworkpiece material to cut the target piece.

At 518, the AVCS automatically determines two deviation correctionangles applied relative to the XYZ-coordinate system used to describethe PGV. Here, the deviation correction angles may be expressed asspherical coordinates applied to the local coordinate system of the PGV.Other equivalent expressions may be used. Also, depending upon thecutting head apparatus motors and controller, fewer or more deviationangles may be determined and used. The deviation correction angles areused to create a new jet direction vector (JDV) that deviates from thePGV in the amount defined by the tilt and swivel specified in thedeviation correction angles. In the case where the predicted shape ofthe cutting front is outside of the deviation tolerance volume,directing the jet along the JDV will adjust the cutting front into thedeviation tolerance volume.

At 520, the AVCS builds the final motion program/data by makingadjustments to the motion program data structure (or other datastructures) as necessary for the particular jet controller in use. Themotion program contains the necessary commands to orient the jet alongeach JDV at the determined cutting speed, starting with the location ofthe lead-in JDV and ending with the location that corresponds to thelead-out JDV, as the jet progress along the entrance and exit contours.The motion program instructions may be expressed in terms of motorpositions or tool-tip positions and orientations, or equivalentsthereof. If tool-tip positions defining location and orientation areused, the controller must interpret the instructions into motorpositions through the use of kinematic equations. The complexity of thekinematics is typically a function of the hardware used to manipulatethe cutting jet.

For example, some controllers are capable of receiving motion programsspecified in terms of the jet orientation and internally use inversekinematics to determine the actual motor positions from the jet tool tippositions. Others, however, expect to receive the motion programinstructions in terms of motor positions, and not jet tool tip x-ypositions and angle coordinates. In this case, when the jet tool tippositions need to be “translated” to motor positions, the AVCS in act520 performs such translations using kinematic equations and makesadjustments to the orientation parameter values stored in the motionprogram data structure.

At 522, the AVCS establishes and/or verifies communication with thecontroller (e.g., controller 320 of FIG. 3 ) of the jet apparatusdepending upon the setup of the connection between the AVCS and thecontroller. For example, in the case of an embedded AVCS, this logic maynot need to be performed.

At 524, the AVCS sends (forwards, communicates, transmits, or the like)the built motion program/motion instructions/data to the controller forexecution. The term “controller” includes any device/software/firmwarecapable of directing motor movement based upon the motion program/motioninstructions/data. The term “motion program” is used herein to indicatea set of instructions that the particular jet apparatus and/orcontroller being used understands, as explained elsewhere. The foregoingcode/logic can accordingly be altered to accommodate the needs of anysuch instructions and or data requirements.

After the AVCS has finished building the motion program and establishingcommunication with the jet apparatus controller, the cutting module userinterface may display the controller feedback and control dialog (the“controller dialog”) for actually running the cutting process.

At 526, the controller executes the motion program to cut the targetpiece. As the controller advances through the motion program, itsmoothly transitions between all angles and speeds. As discussed belowwith reference to FIGS. 6-9 , during execution of the motion program thecontroller may receive data indicative of one or more processparameters, and use such data to modify one or more of the predictivecutting models in real-time to account for the actual (versus expected)value of the one or more process parameters throughout the cuttingprocess. Such allows for more accurate cutting in cases where the one ormore process parameters are different than expected or vary during thecutting process.

The method 500 ends at 528.

As discussed above, dynamic waterjet cutting models may be dependent onmultiple process parameters, such as supply pressure, abrasive mass flowrate, force of the waterjet on the target piece, etc. If these valuesvary during the process of cutting, the corrective dynamic waterjetmodels (discussed above) may apply an inaccurate correction. Forexample, the models may apply an inaccurate correction for taper as afunction of speed along a cutting path. These process parameters may bedirectly measured by a sensor or transducer (e.g., sensors 338 of FIG. 3) communicatively coupled to a controller (e.g., controller 320) and/oran AVCS (e.g., CAD/CAM system 300 of FIG. 3 ).

Generally, the controller of a waterjet or other cutting system mayinclude an interface or module (e.g., the interface or module 331 of thecontroller 320) which receives the sensor data during a cutting process,which allows for real-time (e.g., on the order of 10 ms, 20 ms)accounting of variations of one or more sensed or measured processparameters. This interface or module provides the capability to adjustor refine the models “on the fly,” thus allowing the measured processparameters to be directly fed into real-time corrective models fordynamic waterjet/corner control. Such feature also has the benefit ofreducing the potential for user error during entry of the operatingparameters.

FIG. 6 shows a flow diagram of a method 600 of operating a controller tomodify a dynamic waterjet model in real-time to provide real-timeadjustment of jet orientation. The method 600 begins at 602.

In typical flat-stock processes, taper compensation may be achieved bymatching lead and taper angles to a given cutting speed. The orientationof the cutting jet is therefore changed as a function of the cuttingspeed. The jet orientation may be assigned by means of motion programparameters which are in turn interpreted by inverse kinematic functionslocated on-board the motion controller, as discussed above.Alternatively, explicit motor positions may be programmed based on theinverse kinematics of the system. In both such cases, the jetorientation may be calculated before the actual cutting process beginsbased on the anticipated cutting parameters.

As discussed above, in at least some of the implementations discussedherein, sensors are used to determine in real-time the state of one ormore process parameters, such as abrasive mass flow rate and waterpressure. If, at any time during the cut, the sensors indicate theprocess parameters have changed (e.g., by a threshold amount), the tapercorrection, surface finish and part accuracy may be adversely affected.In the case where the surface finish may still be acceptable but thetaper compensation and part accuracy may not be acceptable, it may bepossible to adjust the jet orientation in real-time, as discussed below.

At 604, the controller receives the original assigned orientation forthe jet of a fluid jet apparatus. At 606, the controller receives one ormore real-time process parameters from one or more sensors. For example,the controller may receive measurements for supply pressure and/orabrasive flow rate from one or more sensors. At 608, the controllerdetermines a modification to the jet orientation based at least in parton the received measured process parameters. At 610, the controller mayobtain the current orientation of the jet. At 612, the controller mayapply an offset to the appropriate jet orientation parameter to correctthe jet orientation based on the received measured process parameters.

The method 600 ends at 614. In the case where the method 600 isimplemented using on-board inverse kinematics, the desired lead andtaper angles are part of the motion program, which helps achieve acts604, 608 and 610.

FIG. 7 is a flow diagram of a method of operating a controller toprovide real-time adjustment of jet orientation for a waterjet cuttingsystem which includes on-board inverse kinematics capabilities. Themethod begins at 702.

At 704, the controller may read the operational parameters data from oneor more operational parameter sensors (e.g., sensor 338 of FIG. 3 ). At706, the controller may determine (e.g., calculate) the required changein the jet orientation as an offset value. At 708, the controller maydetermine the current orientation of the jet using feedback (e.g.,position feedback) from the motion controller. At 710, the controllermay add or subtract to the jet orientation using motor adjustments,e.g., using phantom axes or real-time axes to accomplish this act.

When explicit joint commands are used instead of inverse kinematics, thecontroller may determine the jet orientation using knowledge of theforward kinematics. For flat-stock cutting of parts which have onlyvertical walls (i.e., no bevels), the controller may assume that any jetorientations different from the vertical are due to taper compensationor process models. Any adjustments to motor offsets may be run through aseparate inverse kinematics model.

For parts which have non-vertical cuts (e.g., flat stock or non-flatstock parts with bevels), explicit joint commands may be used. However,the controller may not assume that any jet orientation changes are dueto taper compensation or process models. Rather, in this case, thecontroller may add additional information to the motion program foraccess during real-time. Such information may be supplied using variableassignments, for example.

FIG. 8 shows a flow diagram of a method 800 of operating a controller toadjust a clock thereof in real-time responsive to changing operatingparameters. For example, method 800 may be implemented by controlling aclock 333 of the controller 320 of FIG. 3 . The method 800 begins at802.

In at least some implementations, compensation models, such as tapercompensation models, may rely heavily on the concept of “separation cutspeed,” which is the fastest speed that the jet travels in order toreliably produce separation of part. Taper and lead angles may beconsidered functions of the percent speed of the cut, wherein theseparation cut speed is related to a 100 percent speed. This methodologyhas significant ramifications with regard to real-time adjustment due tochanging cutting process parameters.

If jet orientation parameters are based on percent speed, it is onlynecessary to determine how the measured process parameters affect thepercent speed. Then, the clock cycle of the motion controller may beadjusted appropriately. This is so because changing the clock rate ofthe motion controller keeps the motion of all axes synchronized whileadjusting the cutting speed. That is, there is no need to adjust the jetorientation because the cutting speed adjustment keeps all(pre-determined) corrections valid.

At 804, the controller receives an original reference separation speed(e.g., 100% separation speed, 80% separation speed) for a cuttingprocess. As discussed above, the original reference separation speed maybe based on one or more process parameters input by the user or set bythe AVCS. At 806, the controller may receive one or more processparameters in real-time before and/or during execution of the cuttingprocess.

At 808, the controller may determine (e.g., calculate) a new separationspeed based at least in part on the real-time parameter feedbackreceived from the one or more sensors. At 810, the controller may scalethe motion controller clock rate to match the ratio of the newseparation speed to the old reference separation speed. For example, ifthe new separation speed is 70% of the original reference separationspeed, the motion controller clock rate may be adjusted to a new clockrate which is 70% of an original clock rate. As another example, supposethe separation speed for one set of conditions is 100 inches per minute(ipm). However, it is chosen to cut a part at 50 ipm for a bettersurface finish. 50 ipm may be used as a reference separation speed thatis 50% the actual separation speed. Suppose the abrasive flow rate dropsand the new separation speed is 80 ipm instead of 100 ipm. We now needto slow the clock down so that we cut at 40 ipm, which is the samepercent reduction to the original reference separation speed of 50 ipm.In this example, the separation cut speed was used as a reference, butthe part was not actually cut at either the original separation speed(i.e., 100 ipm) or the modified separation speed (i.e., 80 ipm).

As noted above, such feature allows for adjusting the speed of thecutting process in real-time based on operational parameter feedbackwithout having to adjust the jet orientation because the cutting speedadjustment keeps all corrections valid.

The method 800 ends at 812.

FIG. 9 shows a flow diagram of a method 900 of operating a controller toissue system warnings and/or shutdowns based on real-time sensing of oneor more operating parameters. As discussed above, the application ofbeam cutting models, such as waterjet cutting models, may utilize inputsfrom the user to quantify certain cut quality (e.g., surface roughness).Additionally, certain system parameters (e.g., system pressure, abrasiveflow rate) may be specified. Together, the system parameters and desiredresults may be used as inputs to a cutting model to dictate thecommanded cutting speed of the beam (e.g., waterjet). By measuring theactual system or process parameters, the cutting models or algorithmsmay be used to determine (e.g., calculate) the actual cut quality beingproduced. By comparing the user's desired quality to the calculated,real-time quality, system warnings and/or shutdowns may be determinedand implemented. Such features allow real-time verification of thecutting process, which improves efficiency and reduces or eliminateswaste.

The features described herein provide advantages compared to usingindividual sensor thresholds. For example, whereas individual sensorreadings may be used to issue warnings or shutdowns, it is possible thata combination of multiple sensor readings, while individually out ofrange, may nonetheless yield the intended cut quality. In such cases, itwould be desirable to continue the cutting process rather than issuing awarning or shutting down the cutting process.

As shown in FIG. 9 , a plurality of user specified process values 902and user error threshold values 904 may be input into a cut model 906.The user specified process values 902 may include mixing tube diameter920, material thickness 922, machinability index 924, orifice diameter926, pressure 928, abrasive flow 930, and/or other process values. Theuser error threshold values may include a % cut speed allowed value 932which is set by the user or provided by the AVCS (e.g., as a default orfixed value), and/or other user error threshold values.

At 908, the cut model 906 may be used to generate a commanded percentcut speed used to cut a target piece, as discussed above.

The system may receive sensor data from a plurality of sensors 910. Forexample, a pump 934 of a waterjet cutting apparatus may include anultrahigh pressure (UHP) transducer 936 which measures the systempressure. Similarly, a controller may include an abrasive flow ratesensor 940 (e.g., paddle sensor).

At 912, during execution of a cutting process, the output of the sensors910 may be used by the controller or other system to determine processesvalues or parameters which may be fed into a cut model 914. For example,the output of the UHP transducer 936 may provide a pressure value 942,and the output of the abrasive flow rate sensor 940 may provide anabrasive flow rate value 944, wherein the pressure value 942 and theabrasive flow rate value 944 are provided to the cut model 914.

At 916, the cut model 914 may be used to determine an actual percent cutspeed used to cut a target piece based on the received measured processparameter values.

At 918, the actual cut speed may be compared to the commanded cut speed.Based on the comparison and the percent cut speed allowed 932 input bythe user, the system may issue a warning and/or shutdown the cuttingprocess. As an example, the warning may be provided via any userinterface. The warning may be audible (e.g., beep, voice, siren), visual(e.g., flashing light(s), text, graphics), or any combination thereof.In the case where the cutting process is to be shut down, the system mayissue an appropriate command to the controller to at least pause (e.g.,temporarily pause, terminate) the cutting process. In at least someimplementations, the user may be presented with a prompt to decidewhether to continue or stop the cutting process.

FIG. 10 shows a flow diagram for a method 1000 of operating a fluid jetapparatus to cut a target object or part. The method 1000 may beimplemented using the systems and methods discussed above with referenceto FIGS. 3-9 , for example.

As discussed above, a plurality of cutting process models 1002 may beused to generate a motion program 1004 which may be used by a fluid jetapparatus to cut a part or target object. The cutting process models1002 may receive as input a number of independent parameters 1006 whichmay include static parameters 1006 b and real-time dynamic parameters1006 a. During operation of a cutting process, a number of real-timedynamic parameters 1006 a (e.g., pressure, abrasive flow rate) are inputinto the cutting process models 1002, which allows for generation of amore accurate motion program 1004 (e.g., a modified motion program). Themotion program 1004 is used to control the cutting process to produceaccurate parts or target objects 1008.

FIG. 11 shows a flow diagram for a method 1100 of operating a fluid jetapparatus to cut a target object or part. The method 1100 may beimplemented using the systems and methods discussed above with referenceto FIGS. 3-9 , for example. The method 1100 is similar to the method1000 of FIG. 10 in some aspects, so at least some of the discussionabove is applicable to the method 1100.

In this implementation, the fluid jet apparatus is first controlledusing the motion program 1004 and cutting process models 1002 to cut afirst part 1008. Then, at 1102, the system inspects the first article toidentify errors in the first article using one or more inspectiondevices (e.g., camera, probe, laser). For example, an inspection devicemay be positioned at an inspection station whereat the cut first articlemay be inspected. At 1104, a corrective engine may be provided toautomatically modify/correct the motion program 1004, which modifiedmotion program may then be used to cut a second part and subsequentparts more accurately.

As discussed above, modification of a motion program to generate a“modified motion program” may be achieved in several ways, for example,by modifying the moves of a motion program or by adding additional smallmoves thereto. Such moves may be done through kinematics routines oroffsets to motor commands, for example. In at least someimplementations, a motion program may be modified by modifying theoriginal list of steps of motion program (e.g., move to modified pointone, move to modified point two, etc.).

By utilizing an inspection device, also referred to herein as a partscanning or measurement device, accurate cutting path corrections may beautomatically fed to the motion program without human interaction. Theinspection device may be one or more of a number of suitable devices,such as two dimensional or three dimensional camera, a laser measurementsystem, calipers, coordinate measuring machine (CMM), a shadowgraph,etc., which may be operative to measure one or more attributes of a cutfirst article to identify cutting errors so that the motion program maybe modified to compensate for such identified errors. In at least someimplementations, the cutting and inspection acts may be an iterativeprocesses that repeats for a number of parts, for example, until thecutting process is acceptable. Further, in at least someimplementations, the cutting and inspection acts may be repeatedperiodically to ensure the cutting process continues to be accurate overtime. As an example, the cutting and inspection acts may be repeated ata particular frequency (e.g., once per day, once per week), or may berepeated after a determine number (e.g., 10, 1000) of parts have beencut by the fluid jet apparatus.

In at least some implementations, the inspection device may measure atop surface of the cut first article and then the corrective engine 1104may adjust the motion program 1004 to autonomously correct for measurederrors in the XY plane. Further, in at least some implementations, theinspection device may measure multiple surfaces of the cut first articleand the corrective engine 1104 may autonomously adjust the angle of thecutting tool to eliminate errors in one or more planes (e.g., verticalplane).

FIG. 12 shows a flow diagram for a method 1200 of operating a fluid jetapparatus to cut a target object or part. The method 1200 may beimplemented using the systems and methods discussed above with referenceto FIGS. 3-9 , for example. The method 1200 is similar to the methods1000 and 1100 of FIGS. 10 and 11 , respectively, so at least some of thediscussion above is applicable to the method 1200.

In this implementation, the fluid jet apparatus is first controlledusing the motion program 1004 and cutting process models 1002 to cut acoupon. The coupon may have similar attributes (e.g., type of material,thickness) to the material which is to be used to cut the target object.Then, at 1202, the system inspects the cut coupon for one or moreprocess attributes (e.g., trailback amount, trailback profile, taper)using one or more inspection devices (e.g., camera, probe, laser). At1204, a model modifier may be provided to automatically modify/tune thecutting process models 1002 based on the results of the inspection ofthe cut coupon, which modified cutting process models may be used togenerate a motion program that may then be used to cut target parts moreaccurately. The method 1200 is discussed in further detail below withreference to FIGS. 14-19 .

FIG. 13 shows a flow diagram for a method 1300 which combines thefunctionality of the methods 1000, 1100 and 1200 of FIGS. 10, 11 and 12, respectively. As shown, the system may feed real-time dynamicparameters 1006 a to the process models 1002 to modify the motionprogram to correct for such parameters. Further, the system may cut acoupon (e.g., from time-to-time as desired), inspect the same, and alteror tune the process models 1002 based on the inspection of the cut ofthe coupon. Additionally or alternatively, the system may first cut afirst article or part, inspect the same, and then may utilize thecorrective engine 1104 to modify the motion program 1004 based on theinspection data to produce more accurate parts.

FIGS. 14 and 15 show various attributes of cuts produced by a fluid jetapparatus, and associated definitions of terms used herein. Inparticular, FIG. 14 is a diagram 1400 which shows various cut width or“kerf width” attributes for a cut made by a fluid jet apparatus. Suchattributes include thickness (h) of a part or workpiece to be cut, widthof the cut at the top of the workpiece (W_(t)), width of the cut at thebottom of the workpiece (W_(b)), rounding length (r), taper angle (β),bow (b), burr height (δ), and taper amount. FIG. 15 is a diagram 1500which shows various cut front attributes for a cut made by a fluid jetapparatus. Such attributes include bow, deflection angle, trailbackangle, and trailback amount.

According to at least some implementations of the present disclosure, adevice and method are provided which inspect the kerf of a coupon whichhas been cut by the fluid jet apparatus prior to cutting target objects.In at least some implementations, the inspection device may inspect boththe width and front profile of the cut in the coupon. The system maythen autonomously utilize the inspection data received from theinspection device to correct or fine tune the cutting process models1002 (see FIG. 12 ), for example, by modifying one or more coefficientsof the cutting process models. In at least some implementations, theinspection data may be stored in at least one nontransitoryprocessor-readable storage medium for future use in a similar situationor for use in adjusting the cutting process models for improvedprediction capabilities.

The features discussed herein may be complimentary to utilizingprediction models where not all considerations have been accounted for.For example, when a mixing tube of a fluid jet apparatus wears out, theprediction provided by the cutting process models may not take intoaccount the new shape of the worn mixing tube and its effect on taper,trailback amount, trailback profile, etc.

In at least some implementations, the inspection device performs theinspection of the cut of the coupon in at least two directions. In afirst direction, the kerf width profile (see FIG. 14 ) may be inspectedto determine kerf taper and “bow,” if any. In a second direction, thecut front profile (see FIG. 15 ) may be inspected to determine thetrailback amount and the trailback profile along the depth of the cut(i.e., thickness (h) of the coupon).

FIG. 16 shows a plot 1600 of sample kerf width profiles for a number ofcuts of a coupon having a thickness (h) of 100 mm when cut at variouspercent cutting speeds of the fluid jet apparatus ranging from 5%cutting speed to 50% cutting speed. As shown, at relatively low cuttingspeeds (e.g., 5% cutting speed) the taper is divergent (negative), andat relatively high cutting speeds (e.g., 50% cutting speed) the taper isconvergent (positive).

FIG. 17 shows an inspection device 1700 which may be used to inspect aside of a cut 1702 (top of FIG. 17 ) which extends between a top surface1704 and a bottom surface 1706 of a coupon 1708 to measure a trailbackprofile and/or may inspect the top surface 1704 of the coupon 1708 toinspect the cut 1702 (bottom of FIG. 17 ) to detect total trailbackamount. The cut 1702 includes an uppermost portion 1710 adjacent the topsurface 1704 and a lowermost portion 1712 adjacent the bottom surface1706. The inspection device 1700 may include a probe, vision camera,laser system, etc., to scan a “nibble” cut made on the edge of thecoupon to determine various attributes of the cut (e.g., taper,trailback profile, trailback amount). Horizontal lines 1714 shown inFIG. 17 represent non-limiting example scanning increments for theinspection device 1700. For example, the inspection device 1700 mayobtain a number (e.g., 2, 5, 10, 100) of scans of the cut 1702 atdiffering heights thereof. The inspection device 1700 may obtain scansfrom a front view of the cut 1702, as shown in the top of FIG. 17 , andmay also obtain scans of a top view of the cut, as shown in the bottomof FIG. 17 . Alternatively or additionally, the inspection device 1700may obtain one or more scans from other views of the cut 1702. Onceacquired by the inspection device 1700, inspection data may betransmitted to at least one processor (e.g., controller) of the fluidjet apparatus control system to autonomously determine whether anyparameters of one or more cutting processes models need to be modifiedto produce more accurate parts. For example, the at least one processormay autonomously determine a taper angle that needs to be applied at aselected speed based at least in part on the inspection data receivedfrom the inspection device 1700.

The selected (or predicted) cutting speed may be the one that achievesthe required surface finish based on the cutting process models. Themeasured width profile may be used to determine the taper angle toeither minimize wall deviation from straightness, considering the bowamount, or may simply be used to place the bottom of the cut under thetop of the cut in the intended direction. In the latter case, bow may beignored. As discussed further below, the process is similar fortrailback compensation.

In at least some implementations, the inspection device 1700 alsoinspects the trailback profile of a cut of a coupon. In such cases, atleast two approaches may be followed. In a first approach, the samenibble cut made to inspect the kerf width is scanned using a laser or avision camera to determine the entire profile of the trailback curve.Accordingly, in such instances the nibble cut should be of short lengthinto a front edge 1716 of the coupon 1708 to be accurately inspected bythe inspection device. For example, in at least some implementations thelength of cut may be long enough to allow the exit side (e.g., bottomsurface 1706) of the jet to be into the material by a determined amount(e.g., 0.25 inches), as shown in FIG. 17 as the distance between thefront edge 1716 of the coupon 1708 and the lowermost portion 1712 of thecut 1702 adjacent the bottom surface 1706. In at least someimplementations, this length may initially be predicted using theinitial cutting process models.

In a second approach, the total amount of trailback is measured. Asshown in the bottom portion of FIG. 17 , the total trailback amount isthe difference between the length of the cut 1702 at the top surface1704 and the length of the cut at the bottom surface 1706 from the frontedge 1716 of the coupon 1708 as a reference. In this approach, the shapeof the trailback curve is not considered.

At the end of the nibble cut, the jet should be stopped immediately.Otherwise, leaving the jet dwelling at the end of the cut may alter theshape of the trailback curve, causing the inspection of the cut to beinaccurate. In at least some implementations, the jet may be turned offat the end of the cut allowing a vacuum assist to prevent abrasiveclogging after the jet turns off. Other methods for stopping the jet atthe end of the cut may also be used.

In at least some implementations, the trailback data obtained from theinspection device 1700 may be used to correct the lead angle in the samefashion as correcting for taper. The “bow” may or may not be consideredin the correction.

FIG. 18 shows a plot 1800 of a lead angle determination from inspectedtrailback data. The plot 1800 includes trailback curves for lead anglesof 0 degrees, 1 degree, 2 degrees, 3 degrees and 3.39 degrees. Thenibble cut of the coupon may be made at either the 0 degree lead angleof the original profile, or at the predicted lead angle from the initialcutting process models. In the example shown in FIG. 18 , the rotationangle (“lead”) of the trailback profile may then be made to obtain zerotrailback at the bottom of the coupon, as shown in the 3.39 degreescurve, or alternatively the 3 degrees curve may be selected to minimizethe trailback through the depth of the cut of the coupon.

For parts with complex geometries where the thickness changes due toangles or bevels of cut, one or more approaches may be followed. Forexample, in a first approach, the actual thickness that will beencountered may be cut on a coupon cutting station or “inspectionstation” to determine the actual values of the taper and lead angle forcorrections or use. In another approach, the range of thicknesses may bebracketed by a number (e.g., 3, 4) of thicknesses which will be cut atthe inspection station and then a trend line may be used forinterpolation. Then, coefficients of one or more existing cuttingprocess models may be modified based at least in part on the inspectiondata.

FIG. 19 shows a flow diagram for a method 1900 of operating a fluid jetapparatus control system to cut a target object or part.

At 1902, at least one processor of the fluid jet apparatus controlsystem may use one or more cutting process models to predict a cuttingspeed or a range of cutting speeds for a part to be cut based at leastin part on a required surface finish, for example. The at least oneprocessor may calculate or predict the taper and trailback based on theselected speed(s).

At 1904, the at least one processor may cause the fluid jet apparatus tomake a cut (e.g., nibble cut) in a coupon of the same material as thetarget object. As an example, the coupon may be mounted on an inspectionstation accessible by one or more inspection devices that are operativeto inspect cut(s) in the coupon. As discussed above, the cut of thecoupon may be such that the exit of the jet is within the material by atleast a determined distance (e.g., 0.25 inches), which determination maybe based on prediction by the cutting process models. Alternatively, thecut may be long enough such that the total amount of trailback may bemeasured, as discussed above with reference to FIG. 17 .

At 1906, the one or more inspection devices may inspect or measurevarious attributes of the cut(s) of the coupon. For example, the one ormore inspection devices may measure the width profile, trailbackprofile, and/or trailback amount for one or more cuts made in thecoupon.

At 1908, the at least one processor may determine whether the measuredattributes (e.g., taper, trailback profile, trailback amount) receivedfrom the inspection device(s) match the values predicted by the cuttingprocess models.

At 1910, responsive to determining that the measured attributes do notmatch the predicted values, the at least one processor may use theinspection data to correct one or more of the cutting process models.For example, the inspection data may be used to determine thecorrections for taper and lead angles for the particular thickness ofthe material at the determined speed(s). At 1912, the at least oneprocessor may use the corrected models to generate taper and lead anglepredictions. Alternatively, responsive to determining that the measuredattributes match the predicted values, the at least one processor mayuse the taper and lead angle predictions from the existing cuttingprocess model(s). At 1914, the at least one processor may proceed tocause the fluid jet apparatus to cut the part using the determined taperand lead angle predictions.

At 1916, the at least one processor of the fluid jet apparatus controlsystem may utilize the inspection data to modify one or more of thecutting process models for subsequent use (e.g., for cutting differentbut similar parts). As an example, a correction factor or modifiedprediction coefficients may be used by the cutting process models forimproved predictions with the range of the material thickness.

Advantageously, the method 1900 converts the model prediction equationsfrom “static” to “dynamic.” In at least some implementations, the formof the prediction equations do not change, only the coefficients changebased on the inspection data which may be obtained from time-to-time(e.g., periodically) at desired intervals.

As discussed above, various devices may be utilized to inspect a couponor first article. Non-limiting examples of inspection devices include alaser sensor (e.g., laser height sensor), a vision camera, a mechanicaltouch probe, etc. In implementations wherein a laser sensor is utilized,a laser may scan an upper surface of the material along the nibble cutto detect the edge of the coupon. A lateral offset may be needed withabout a 1.0 to 1.5 times the diameter of the mixing tube from the centerof the nibble cut. The laser may also detect the end of the cut as thesensor travels along the center of the nibble cut. This process may beused to determine the length of the cut at the top surface of thematerial. When the laser sensor backs up with a focus length equal tothe thickness of the material, the laser may detect the edge of the cutat the bottom surface of the material. The difference between these twolengths is the trailback amount.

To inspect the trailback profile and the kerf width profile, the sensoror the coupon may be rotated 90 degrees relative to one another. Thelaser may scan across the profile of the cut to detect the edges of thecut at intervals from the top surface of the sample coupon to the bottomsurface of the sample coupon. The detected locations of the edges may beused to determine the width profile and the taper of the kerf. Toinspect the trailback profile, the laser may travel in the center of thenibble cut from the top surface of the material of the coupon to thebottom surface while focused on the front of the cut profile.

A vision camera, touch probe, or other inspection device may also beused similarly to a laser sensor system. In such instances, like thelaser system, a vision camera, touch probe or other inspection devicemay be mounted on an inspection station to inspect the cut of the couponor first article.

In at least some implementations, a general model may be used toinitially predict parameters to be used for cutting, such as taperangle, lead angle, and cutting speed. The coefficients of the equationsmay be modified before cutting the target part. The modification may bemade based on the inspection data, as discussed above. Equation (1)below is an example equation for a kerf width model with severalcoefficients.

$\begin{matrix}{\frac{w_{e}}{d_{m}\sqrt{R}} = {{0.3}35{\sqrt{\frac{X}{X_{c}}}\left\lbrack {1 - \sqrt{\frac{\pi d_{m}^{2}\sigma_{f}}{8{m_{a}\left( {1 - c} \right)}\left( {V_{a} - {Vc}} \right)^{2}}\frac{X}{X_{c}}}} \right\rbrack}^{2/3}}} & (1)\end{matrix}$where,

w_(e) is the width of the cut;

V_(a) is the abrasive particle velocity, determined from anotherequation with additional coefficients;

X_(C) is the jet length (coherency) characteristic;

V_(e) is a threshold velocity (material dependent);

σ_(f) is a material property;

c is an experimental factor of abrasive usage;

d_(m) is the mixing tube diameter;

R is a ratio of Xc/dm;

X is axial distance from jet exit; and

m_(a) is abrasive flow rate.

As discussed above, rather than predicting the jet deflections andshapes (and resulting taper and trailback) based on cut speed,acceleration and material machinability, in at least someimplementations direct observation of the cut result may be used tocorrect the part or motion program and nozzle direction to result in anaccurate part. An automatic algorithm that compares the measuredgeometry (e.g., top and bottom) to the desired CAD model generatesgeometric deviation from the CAD geometry. Computer-implementedalgorithms may associate those geometric deviations with nozzle positionand direction modifications in the part program. Methods of doing thatinclude automatic best-fit matching with vector corrections, correctingon a per-segment basis if the CAD model is already broken up intosegments for G-code programming, or many other methods.

In at least some implementations, multiple iterations might be desirableor required to converge on the desired level of finished part accuracy.Each iteration and resulting inspection/correction may lead to a betterresult and eventually converges on a very accurate part. In at leastsome implementations, the level of accuracy may be programmable (e.g.,selected, input) by the user, and the iterations automatically executeduntil that level of accuracy is met. Automated decisions may includegeneral reduction in speeds in cutting the part, for example if theresulting bottom edge quality is too wavy to hit the desired accuracylevel.

In at least some implementations, the aforementioned method may be usedin conjunction with an imperfect model of jet behavior based on speed,acceleration and material and jet properties. Such a model results inbetter initial cut accuracy. Starting with that better initial cut partenables reaching the desired final cut part accuracy with feweriterations. In addition, in at least some implementations the directgeometric measurements may also be fed back into the model to refineparameters such as material or jet property parameters (e.g.,machinability index, effective jet power). For example, if the measuredgeometry showed consistent taper (e.g., the correction vectors onaverage pointed out), then a correction factor may be generated to themachinability index for that specific material/jet combination so thatthe next new part cut using the same material and jet would be moreaccurate on the initial cut. The same may be done with direct trailbackstriation measurements, which then may be used to adjust or correct themodeling assumptions. Advantageously, the systems and methods discussedabove improve the resulting geometry of the cut part and do not needprior knowledge of jet geometries, abrasive flow rates, materialproperties, etc. As long as the part can be cut, then the systems andmethods are able to correct the geometry and cut a good part after anumber of iterations.

In at least one implementation, a 3D laser scanner may be used to scanat least a portion of cut part. The bottom of the part, where the jetexits, can be measured by the scanner or other suitable measurementdevice. In at least some implementations, it may not be necessary forthe cut part to remain in the cut position if the scanner or measurementdevice measures the entire part (e.g., including jet entry and exit).The gathered scan data may then be autonomously compared to the idealCAD geometry. In at least some implementations, any striations on thepart may be measured as well, giving direct measurement of trailback andjet geometry at that location. Correction vectors may be generatedautomatically, and those offsets may be autonomously applied to theentry and exit geometries of the part program. In at least someimplementations, a single axis scanner (e.g., physical, optical, laser,other) may be used to detect cut edges only and correction may be madebased on the cut edge locations and not any direct measurements oftrailback on the sides of the cut part.

At least some of the implementations discussed herein providesignificant advantages. For example, at least some of theimplementations of the present disclosure reduce or eliminate the needto continuously improve “static” models which require significantamounts of time and costs. Further, at least some implementationsaccount for one or more (e.g., numerous) variables which may or may notchange during cutting processes. Additionally, at least someimplementations allow for cutting more accurate parts by automaticallyand directly utilizing inspection data, and by utilizing the inspectiondata to modify the cutting process models. At least some implementationsdiscussed herein also build on existing models which already providesignificant well-developed kinematic strategies, thereby providingmodels which are even more accurate than previously achieved.

The foregoing detailed description has set forth various implementationsof the devices and/or processes via the use of block diagrams,schematics, and examples. Insofar as such block diagrams, schematics,and examples contain one or more functions and/or operations, it will beunderstood by those skilled in the art that each function and/oroperation within such block diagrams, flowcharts, or examples can beimplemented, individually and/or collectively, by a wide range ofhardware, software, firmware, or virtually any combination thereof. Inat least one implementation, the present subject matter may beimplemented via Application Specific Integrated Circuits (ASICs).However, those skilled in the art will recognize that theimplementations disclosed herein, in whole or in part, can beequivalently implemented in standard integrated circuits, as one or morecomputer programs running on one or more computers (e.g., as one or moreprograms running on one or more computer systems), as one or moreprograms running on one or more controllers (e.g., microcontrollers) asone or more programs running on one or more processors (e.g.,microprocessors), as firmware, or as virtually any combination thereof,and that designing the circuitry and/or writing the code for thesoftware and or firmware would be well within the skill of one ofordinary skill in the art in light of this disclosure.

Those of skill in the art will recognize that many of the methods oralgorithms set out herein may employ additional acts, may omit someacts, and/or may execute acts in a different order than specified.

In addition, those skilled in the art will appreciate that themechanisms taught herein are capable of being distributed as a programproduct in a variety of forms, and that an illustrative implementationapplies equally regardless of the particular type of signal bearingmedia used to actually carry out the distribution. Examples of signalbearing media include, but are not limited to, the following: recordabletype media such as floppy disks, hard disk drives, CD ROMs, digitaltape, and computer memory.

The various implementations described above can be combined to providefurther implementations. To the extent that they are not inconsistentwith the specific teachings and definitions herein, all of the U.S.patents, U.S. patent application publications, U.S. patent applications,foreign patents, foreign patent applications and non-patent publicationsreferred to in this specification, including U.S. Pat. No. 6,766,216issued on Jul. 20, 2004; U.S. Pat. No. 6,996,452 issued on Feb. 7, 2006;U.S. Pat. No. 8,423,172 issued on Apr. 16, 2013, and U.S. PatentApplication No. 62/523,979 filed on Jun. 23, 2017, are incorporatedherein by reference, in their entirety. Aspects of the implementationscan be modified, if necessary, to employ systems, circuits and conceptsof the various patents, applications and publications to provide yetfurther implementations.

These and other changes can be made to the implementations in light ofthe above-detailed description. In general, in the following claims, theterms used should not be construed to limit the claims to the specificimplementations disclosed in the specification and the claims, butshould be construed to include all possible implementations along withthe full scope of equivalents to which such claims are entitled.Accordingly, the claims are not limited by the disclosure.

The invention claimed is:
 1. A fluid jet apparatus control system,comprising: a controller clock; at least one nontransitoryprocessor-readable storage medium that stores at least one ofprocessor-executable instructions or data; and at least one processorcommunicably coupled to the at least one nontransitoryprocessor-readable storage medium, in operation the at least oneprocessor: receives an initial motion program for a target object whichis to be cut by a fluid jet apparatus; receives a reference separationcut speed; executes a motion program to cause the fluid jet apparatus tocut the target object according to the received initial motion program;and from time-to-time during execution of the motion program,autonomously receives at least one operational parameter of the fluidjet apparatus from at least one sensor; autonomously determines amodified separation cut speed based at least in part on the received atleast one operational parameter; and autonomously adjusts a clock rateof the controller clock to cause the fluid jet apparatus to cut thetarget object based at least in part on the modified separation cutspeed.
 2. The fluid jet apparatus control system of claim 1 where the atleast one processor: adjusts a clock rate of the controller clock sothat a ratio of a new clock rate to a previous clock rate matches aratio of the modified separation cut speed to a previous referenceseparation cut speed.
 3. The fluid jet apparatus control system of claim1 wherein the initial motion program including at least one of a leadangle program, a taper angle program, or a corner control program. 4.The fluid jet apparatus control system of claim 1 wherein the at leastone sensor comprises at least one of a supply pressure sensor, anabrasive mass flow rate sensor or a force sensor.
 5. The fluid jetapparatus control system of claim 1 wherein the at least one sensorcomprises a supply pressure sensor and an abrasive mass flow ratesensor.
 6. The fluid jet apparatus control system of claim 1 wherein theat least one processor: receives a commanded percent cut speed of thefluid jet apparatus; determines an actual percent cut speed of the fluidjet apparatus based at least in part on the received at least oneoperational parameter; compares the actual percent cut speed of thefluid jet apparatus to the received commanded percent cut speed;determines whether the actual percent cut speed differs from thecommanded percent cut speed by more than an allowed percent cut speedthreshold value; and responsive to a determination that the actualpercent cut speed differs from the commanded percent cut speed by morethan the allowed percent cut speed threshold value: causes a warning tobe generated; or causes the fluid jet apparatus to at least pause thecutting of the target object.
 7. The fluid jet apparatus control systemof claim 6 wherein the at least one processor: receives the allowedpercent cut speed threshold value from at least one user interfacecommunicatively coupled to the at least one processor.
 8. The fluid jetapparatus control system of claim 6 wherein responsive to adetermination that the actual percent cut speed differs from thecommanded percent cut speed by more than the allowed percent cut speedthreshold value, the at least one processor: causes at least one of avisual warning or an audible warning to be generated.
 9. The fluid jetapparatus control system of claim 6 wherein responsive to adetermination that the actual percent cut speed differs from thecommanded percent cut speed by more than the allowed percent cut speedthreshold value, the at least one processor: causes to the fluid jetapparatus to terminate the cutting of the target object.
 10. A method ofautonomously controlling a fluid jet apparatus, the method comprising:receiving, by at least one processor, an initial motion program for atarget object which is to be cut by a fluid jet apparatus; receiving, byat least one processor, a reference separation cut speed; executing, bythe at least one processor, a motion program to cause the fluid jetapparatus to cut the target object according to the received initialmotion program; and from time-to-time during execution of the motionprogram, autonomously receiving, by the at least one processor, at leastone operational parameter of the fluid jet apparatus from at least onesensor; autonomously determining, by the at least one processor, amodified separation cut speed based at least in part on the received atleast one operational parameter; and autonomously adjusting, by the atleast one processor, a clock rate of a controller clock to cause thefluid jet apparatus to cut the target object based at least in part onthe modified separation cut speed.
 11. The method of claim 10 whereinautonomously adjusting a clock rate of the controller clock comprisesautonomously adjusting a clock rate of the controller clock so that aratio of a new clock rate to a previous clock rate matches a ratio ofthe modified separation cut speed to a previous reference separation cutspeed.
 12. The method of claim 10, further comprising: receiving, by theat least one processor, a commanded percent cut speed of the fluid jetapparatus; determining, by the at least one processor, an actual percentcut speed of the fluid jet apparatus based at least in part on thereceived at least one operational parameter; comparing, by the at leastone processor, the actual percent cut speed of the fluid jet apparatusto the received commanded percent cut speed; determining, by the atleast one processor, whether the actual percent cut speed differs fromthe commanded percent cut speed by more than an allowed percent cutspeed threshold value; and responsive to determining that the actualpercent cut speed differs from the commanded percent cut speed by morethan the allowed percent cut speed threshold value: causing, by the atleast one processor, a warning to be generated; or causing, by the atleast one processor, the fluid jet apparatus to at least pause thecutting of the target object.
 13. The method of claim 12 wherein causinga warning to be generated comprises causing at least one of a visualwarning or an audible warning to be generated.